package xin.fsqr520.project.domain.po;

import lombok.Getter;

/**
 * 好友关系状态枚举
 * 对应关系：pending-待确认，accepted-已接受，blocked-已拉黑
 */
@Getter
public enum FriendshipType {
    PENDING("pending", "待确认"),
    ACCEPTED("accepted", "已接受"),
    BLOCKED("blocked", "已拉黑");

    /**
     * 状态值（存储到数据库的字符串，如 "pending"）
     */
    private final String type;

    /**
     * 状态描述（中文说明，用于日志/前端展示）
     */
    private final String desc;

    /**
     * 构造函数
     * @param type 状态值（英文，对应数据库字段）
     * @param desc 状态描述（中文）
     */
    FriendshipType(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }

    /**
     * 重写toString，返回状态值（默认返回枚举名，这里改为返回type字段）
     */
    @Override
    public String toString() {
        return type;
    }

    /**
     * 根据状态值（字符串）获取枚举实例
     * @param type 状态值（如 "pending"）
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 如果type不存在
     */
    public static FriendshipType from(String type) {
        for (FriendshipType friendshipType : values()) {
            // 忽略大小写比较（如 "Pending" 也能匹配 PENDING）
            if (friendshipType.type.equalsIgnoreCase(type)) {
                return friendshipType;
            }
        }
        throw new IllegalArgumentException("无效的好友关系状态：" + type);
    }
}